/*
 * Indiana University Community Grid Computing Lab Software License,Version 1.1
 *
 * Copyright (c) 2002 Community Grid Computing Lab, Indiana University. 
 * All rights reserved.		
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution,
 *    if any, must include the following acknowledgment:
 *      "This product includes software developed by the Indiana University 
 *       Community Grid Computing Lab (http://www.communitygrids.iu.edu/)."
 *    Alternately, this acknowledgment may appear in the software itself,
 *    if and wherever such third-party acknowledgments normally appear.
 *
 * 4. The names "Indiana Univeristy","Indiana Univeristy Pervasive Techonology
 *    Labs" and  "Indiana Univeristy Community Grid Computing Lab" must not be
 *    used to endorse or promote products derived from this software without 
 *    prior written permission. For written permission, please contact 
 *    http://www.communitygrids.iu.edu/.
 *
 * 5. Products derived from this software may not use "Indiana
 *    University" name nor may "Indiana University" appear in their name,
 *    without prior written permission of the Indiana University.
 *
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 
 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 
 * INDIANA UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package cgl.sensorgrid.sopac.gps.threadpool;

import java.lang.reflect.*;

import cgl.hpsearch.engine.URIBindings.*;
import cgl.narada.event.*;

public class Test {
    public Test() {
    }

    public void test() {
        String n = "cgl.sensorgrid.sopac.gps.filters.CalcDisplacement";
        try {
            Class c = Class.forName(n);
            NBEvent nb;
            Class[] params = {NBNativeStreamHandler.class, NBEvent.class};
            Constructor con = c.getDeclaredConstructor(params);
            System.out.println("con.getName()=" + con.getName());
//           con.newInstance()

            Method meth = c.getMethod("run", params);
            System.out.println("meth.getName()=" + meth.getName());
            //meth.invoke(c, params);


            /*
                       Class cls = Class.forName("method2");
                       Class partypes[] = new Class[2];
                        partypes[0] = Integer.TYPE;
                        partypes[1] = Integer.TYPE;
                        Method meth = cls.getMethod(
                          "add", partypes);
                        method2 methobj = new method2();
                        Object arglist[] = new Object[2];
                        arglist[0] = new Integer(37);
                        arglist[1] = new Integer(47);
                        Object retobj
                          = meth.invoke(methobj, arglist);
                        Integer retval = (Integer)retobj;
                        System.out.println(retval.intValue());


                       Method methlist[]
                                     = c.getDeclaredMethods();
                                   for (int i = 0; i < methlist.length;
                                      i++) {
                                      Method m = methlist[i];
             System.out.println("name = " + m.getName());
                                      System.out.println("decl class = " +
                                                     m.getDeclaringClass());
                                      Class pvec[] = m.getParameterTypes();
                                      for (int j = 0; j < pvec.length; j++)
             System.out.println("param #" + j + " " + pvec[j]);
                                      Class evec[] = m.getExceptionTypes();
                                      for (int j = 0; j < evec.length; j++)
                                         System.out.println("exc #" + j
                                           + " " + evec[j]);
                                      System.out.println("return type = " +
                                                         m.getReturnType());
                                      System.out.println("-----");
                        }

                        Constructor ctorlist[]
                                       = c.getDeclaredConstructors();
                                 for (int i = 0; i < ctorlist.length; i++) {
                                       Constructor ct = ctorlist[i];
             System.out.println("name = " + ct.getName());
                                       System.out.println("decl class = " +
                                                    ct.getDeclaringClass());
                                       Class pvec[] = ct.getParameterTypes();
                                       for (int j = 0; j < pvec.length; j++)
                                          System.out.println("param #"
                                             + j + " " + pvec[j]);
                                       Class evec[] = ct.getExceptionTypes();
                                       for (int j = 0; j < evec.length; j++)
                                          System.out.println(
                                            "exc #" + j + " " + evec[j]);
                                       System.out.println("-----");
                                    }

             */

        } catch (Exception ex) {
            ex.printStackTrace();
        }

    }

    public static void main(String[] args) {
        try {
            Test t = new Test();
            t.test();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

}
